/** * BSD-style license; for more info see http://pmd.sourceforge.net/license.html */ package test.net.sourceforge.pmd.rules; import net.sourceforge.pmd.PMD; import net.sourceforge.pmd.rules.AvoidDuplicateLiteralsRule; import test.net.sourceforge.pmd.testframework.SimpleAggregatorTst; import test.net.sourceforge.pmd.testframework.TestDescriptor; import java.util.Set; public class AvoidDuplicateLiteralsRuleTest extends SimpleAggregatorTst { private AvoidDuplicateLiteralsRule rule; public void setUp() { rule = new AvoidDuplicateLiteralsRule(); rule.setMessage("avoid ''{0}'' and ''{1}''"); rule.addProperty("threshold", "2"); } public void testAll() { runTests(new TestDescriptor[] { new TestDescriptor(TEST1, "duplicate literals in argument list", 1, rule), new TestDescriptor(TEST2, "literal int argument, ok for now", 0, rule), new TestDescriptor(TEST3, "duplicate literals in field decl", 1, rule), }); } public void testStringParserEmptyString() { AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(','); Set res = p.parse(""); assertTrue(res.isEmpty()); } public void testStringParserSimple() { AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(','); Set res = p.parse("a,b,c"); assertEquals(3, res.size()); assertTrue(res.contains("a")); assertTrue(res.contains("b")); assertTrue(res.contains("c")); } public void testStringParserEscapedChar() { AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(','); Set res = p.parse("a,b,\\,"); assertEquals(3, res.size()); assertTrue(res.contains("a")); assertTrue(res.contains("b")); assertTrue(res.contains(",")); } public void testStringParserEscapedEscapedChar() { AvoidDuplicateLiteralsRule.ExceptionParser p = new AvoidDuplicateLiteralsRule.ExceptionParser(','); Set res = p.parse("a,b,\\\\"); assertEquals(3, res.size()); assertTrue(res.contains("a")); assertTrue(res.contains("b")); assertTrue(res.contains("\\")); } public static final String TEST1 = "public class Foo {" + PMD.EOL + " private void bar() {" + PMD.EOL + " buz(\"Howdy\");" + PMD.EOL + " buz(\"Howdy\");" + PMD.EOL + " buz(\"Howdy\");" + PMD.EOL + " buz(\"Howdy\");" + PMD.EOL + " }" + PMD.EOL + "}"; public static final String TEST2 = "public class Foo {" + PMD.EOL + " private void bar() {" + PMD.EOL + " buz(2);" + PMD.EOL + " }" + PMD.EOL + "}"; public static final String TEST3 = "public class Foo {" + PMD.EOL + " String[] FOO = {\"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\", \"foo\"};" + PMD.EOL + "}"; }